/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package GestionEstadisticas;

import java.io.*;
import java.util.ArrayList;
import Gestionequipo.*;
import GestionJornada.*;
/**
 *
 * @author Fernandez
 */
public class GestorEstadisticas {
    public EstadisticasDB estDB = new EstadisticasDB();
    
    /*
     * Guarda las estadísticas de un partido
     */
    public void GuardarEstadisticas (File fichero){        
        estDB.GuardarEstadisticasEquipo(fichero);
    }
    
    /*
     * Genera el fichero para un partido
     */
    public void GenerarFicheroSalida(Equipo eq,int id_jornada){
        File fichero = null;
        FileWriter fw = null;
        PrintWriter pw = null;
        int njug=0;
    
        try{
            fichero = new File("FicheroParaPartido"+id_jornada+".txt");
            fw = new FileWriter(fichero);
            pw = new PrintWriter (fw);
            njug = eq.GetJugadores().size();
        
            pw.write(id_jornada+"\n");
            pw.write(njug+"\n");
        
            for (int i=0; i<njug; i++){
                pw.write(eq.GetJugadores().get(i).getId_jugador()+"\n");
                pw.write(eq.GetJugadores().get(i).getNombre()+"\n");
                pw.write(eq.GetJugadores().get(i).getApellido1()+"\n");
                pw.write(eq.GetJugadores().get(i).getApellido2()+"\n");
            }
            pw.close();
            fw.close();
            
        }catch(IOException e){
            e.printStackTrace();    
        }
    }
    
    /*
     * Consultar las jornadas en las que un jugador tiene estadísticas
     */
    public ArrayList<Jornada> getJornadasJugadorEstadisticas (int id_jugador){
        ArrayList<Jornada> jornadas = new ArrayList<Jornada>();
        
        EstadisticasDB estdb = new EstadisticasDB();
        
        jornadas = estdb.getJornadasJugadorEstadisticas(id_jugador);
        
        return jornadas;
    }
    
    /*
     * Devuelve las estadísticas de un jugador en una jornada en concreto 
     */
    public Estadistica getEstadisticaJornadaJugador (int id_jornada,int id_jugador){
        Estadistica est = new Estadistica();
        EstadisticasDB estdb = new EstadisticasDB();       
        
        est = estdb.getEstadisticaJornadaJugador(id_jornada, id_jugador);
        
        return est;
    }
    
    /*
     * Devuelve todas las estadisticas de un jugador
     */
    public ArrayList<Estadistica> getEstadisticasJugador (int id_jugador){
        
        ArrayList<Estadistica> estadisticas = new ArrayList<Estadistica> ();
        EstadisticasDB estdb = new EstadisticasDB();
        
        estadisticas = estdb.getEstadisticasJugador(id_jugador);
        
        return estadisticas;
    }
    
    /*
     * Devuelve array con los valores medios de las estadísticas del jugador
     * El orden de los valores del ArrayList devuelto es:
     *  valoracion, perdidas, mates, recuperaciones, asistencias, tapones a favor, tapones en contra, faltas personales,
     *  rebotes ofensivos, rebotes defensivos, faltas_recibidas, total tiros de 1,tiros de 1, total tiros de 2 
     *  tiros de 2, total tiros de 3, tiros de 3, puntos, minuto-;
     */
    public ArrayList<Float> getEstadisticasGlobalesJugador (int id_jugador){

        ArrayList<Float> valores_medios = new ArrayList<Float> ();
        EstadisticasDB estdb = new EstadisticasDB();
        ArrayList<Estadistica> estadisticas = new ArrayList<Estadistica>();
        
        estadisticas = estdb.getEstadisticasJugador(id_jugador);
        
        float suma_val=0, suma_per=0, suma_mat=0, suma_rec=0, suma_asis=0, suma_tapf=0, suma_tapc=0, suma_fp=0, suma_rebo=0;
        float suma_rebd=0, suma_fr=0, suma_tt1=0, suma_t1=0, suma_tt2=0, suma_t2=0, suma_tt3=0, suma_t3=0, suma_ptos=0, suma_min=0;
        
        int nest = estadisticas.size();
        for (int i=0; i<nest; i++){
            suma_val += estadisticas.get(i).Get_valoracion(); 
            suma_per += estadisticas.get(i).Get_perdidas();
            suma_mat += estadisticas.get(i).Get_mates();
            suma_rec += estadisticas.get(i).Get_recuperaciones();
            suma_asis += estadisticas.get(i).Get_asistencias(); 
            suma_tapf += estadisticas.get(i).Get_tapones_realizados();
            suma_tapc += estadisticas.get(i).Get_tapones_recibidos();
            suma_fp += estadisticas.get(i).Get_faltas_personales();
            suma_rebo += estadisticas.get(i).Get_rebotes_ofensivos();
            suma_rebd += estadisticas.get(i).Get_rebotes_defensivos();
            suma_fr += estadisticas.get(i).Get_faltas_recibidas();
            suma_tt1 += estadisticas.get(i).Get_tiros_totales_de1();
            suma_t1 += estadisticas.get(i).Get_tiros_de1();
            suma_tt2 += estadisticas.get(i).Get_tiros_totales_de2();
            suma_t2 += estadisticas.get(i).Get_tiros_de2(); 
            suma_tt3 += estadisticas.get(i).Get_tiros_totales_de3();
            suma_t3 += estadisticas.get(i).Get_tiros_de3();
            suma_ptos += estadisticas.get(i).Get_puntos();
            suma_min += estadisticas.get(i).Get_minutos();
        }
        
        valores_medios.add(0,suma_val/nest);
        valores_medios.add(1,suma_per/nest);
        valores_medios.add(2,suma_mat/nest);
        valores_medios.add(3,suma_rec/nest);
        valores_medios.add(4,suma_asis/nest);
        valores_medios.add(5,suma_tapf/nest);
        valores_medios.add(6,suma_tapc/nest);
        valores_medios.add(7,suma_fp/nest);
        valores_medios.add(8,suma_rebo/nest);
        valores_medios.add(9,suma_rebd/nest);
        valores_medios.add(10,suma_fr/nest);
        valores_medios.add(11,suma_tt1/nest);
        valores_medios.add(12,suma_t1/nest);
        valores_medios.add(13,suma_tt2/nest);
        valores_medios.add(14,suma_t2/nest);
        valores_medios.add(15,suma_tt3/nest);
        valores_medios.add(16,suma_t3/nest);
        valores_medios.add(17,suma_ptos/nest);
        valores_medios.add(18,suma_min/nest);
        
        
        return valores_medios;
    }
}
